package kevin.framework.basic.common.tree;

import com.alibaba.fastjson.JSONObject;

import kevin.framework.basic.common.ui.ClientButton;

/**
 * @ClassName: IListToTree
 * @Description: 树形列表转为树形json的接口定义
 * @author kevin.huang
 * @date 2015-8-19 上午9:31:32
 */
public interface IListToTree<T> {

	/**
	 * @Title: createNode @Description: 创建json节点 ，用于对节点的json进行额外属性补充 @param bean
	 * 节点数据 @param JSONObject 节点json对象 @return @throws
	 */
	abstract void createNode(T bean, JSONObject obj, Object extParams);

	/**
	 * @Title: getTreeId @Description: 获取树节点的id @param bean 节点数据 @param extParams
	 * 扩展参数 默认值0 @return @throws
	 */
	abstract String getTreeId(T bean, Object extParams);

	/**
	 * @Title: getTreeText @Description: 获取树节点的文本 @param bean 节点数据 @param extParams
	 * 扩展参数 默认值0 @return @throws
	 */
	abstract String getTreeText(T bean, Object extParams);

	/**
	 * @Title: getTreePid @Description: 获取树节点的父节点id @param bean 节点数据 @param
	 * extParams 扩展参数 默认值0 @return @throws
	 */
	abstract String getTreePid(T bean, Object extParams);

	/**
	 * @Title: isTreeLeaf @Description: 判断当前节点是否是子节点 @param bean 节点数据 @param
	 * extParams 扩展参数 默认值0 @return @throws
	 */
	abstract boolean isTreeLeaf(T bean, Object extParams);

	/**
	 * @Title: createTreeButton @Description: 创建树节点中的按钮 @param btn 按钮对象 @param bean
	 * 节点数据 @param extParams 扩展参数 默认值0 @return @throws
	 */
	abstract ClientButton createTreeButton(ClientButton btn, T bean, Object extParams);
}
